home *** CD-ROM | disk | FTP | other *** search
/ Hardcore Visual Basic 5.0 (2nd Edition) / Hardcore Visual Basic 5.0 - Second Edition (1997)(Microsoft Press).iso / Code / EDWINA.Frm < prev    next >
Text File  |  1997-06-14  |  32KB  |  979 lines

  1. VERSION 5.00
  2. Object = "{6B7E6392-850A-101B-AFC0-4210102A8DA7}#1.1#0"; "comctl32.ocx"
  3. Object = "{35DFF50E-DEB3-11D0-8C50-00C04FC29CEC}#1.1#0"; "DropStack.ocx"
  4. Object = "{0B8EB583-E121-11D0-8C51-00C04FC29CEC}#1.1#0"; "Editor.ocx"
  5. Begin VB.Form FEdwina 
  6.    Caption         =   "Edwina"
  7.    ClientHeight    =   6492
  8.    ClientLeft      =   1020
  9.    ClientTop       =   2436
  10.    ClientWidth     =   8400
  11.    FillColor       =   &H00C0C0C0&
  12.    BeginProperty Font 
  13.       Name            =   "Terminal"
  14.       Size            =   7.2
  15.       Charset         =   255
  16.       Weight          =   700
  17.       Underline       =   0   'False
  18.       Italic          =   0   'False
  19.       Strikethrough   =   0   'False
  20.    EndProperty
  21.    ForeColor       =   &H00000000&
  22.    Icon            =   "EDWINA.frx":0000
  23.    KeyPreview      =   -1  'True
  24.    LinkTopic       =   "Form1"
  25.    ScaleHeight     =   6492
  26.    ScaleWidth      =   8400
  27.    Begin ComctlLib.Toolbar barEdit 
  28.       Align           =   1  'Align Top
  29.       Height          =   372
  30.       Left            =   0
  31.       TabIndex        =   4
  32.       Top             =   0
  33.       Width           =   8400
  34.       _ExtentX        =   14817
  35.       _ExtentY        =   656
  36.       ButtonWidth     =   609
  37.       ButtonHeight    =   582
  38.       AllowCustomize  =   0   'False
  39.       HelpContextID   =   1241660
  40.       ImageList       =   "imlstEdit"
  41.       _Version        =   327680
  42.       BeginProperty Buttons {0713E452-850A-101B-AFC0-4210102A8DA7} 
  43.          NumButtons      =   21
  44.          BeginProperty Button1 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  45.             Key             =   "New"
  46.             Description     =   "Create new file"
  47.             Object.ToolTipText     =   "Create new file"
  48.             Object.Tag             =   ""
  49.             ImageIndex      =   1
  50.          EndProperty
  51.          BeginProperty Button2 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  52.             Key             =   "Open"
  53.             Description     =   "Open existing file"
  54.             Object.ToolTipText     =   "Open existing file"
  55.             Object.Tag             =   ""
  56.             ImageIndex      =   2
  57.          EndProperty
  58.          BeginProperty Button3 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  59.             Key             =   "Save"
  60.             Description     =   "Save file"
  61.             Object.ToolTipText     =   "Save file"
  62.             Object.Tag             =   ""
  63.             ImageIndex      =   3
  64.          EndProperty
  65.          BeginProperty Button4 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  66.             Key             =   ""
  67.             Object.Tag             =   ""
  68.             Style           =   3
  69.             MixedState      =   -1  'True
  70.          EndProperty
  71.          BeginProperty Button5 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  72.             Key             =   ""
  73.             Object.Tag             =   ""
  74.             Style           =   4
  75.             Object.Width           =   1200
  76.             MixedState      =   -1  'True
  77.          EndProperty
  78.          BeginProperty Button6 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  79.             Key             =   "Print"
  80.             Description     =   "Print file"
  81.             Object.ToolTipText     =   "Print file"
  82.             Object.Tag             =   ""
  83.             ImageIndex      =   4
  84.          EndProperty
  85.          BeginProperty Button7 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  86.             Key             =   "Find"
  87.             Description     =   "Find text"
  88.             Object.ToolTipText     =   "Find text"
  89.             Object.Tag             =   ""
  90.             ImageIndex      =   5
  91.          EndProperty
  92.          BeginProperty Button8 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  93.             Key             =   ""
  94.             Object.Tag             =   ""
  95.             Style           =   3
  96.             MixedState      =   -1  'True
  97.          EndProperty
  98.          BeginProperty Button9 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  99.             Key             =   "Cut"
  100.             Description     =   "Cut selection"
  101.             Object.ToolTipText     =   "Cut selection"
  102.             Object.Tag             =   ""
  103.             ImageIndex      =   6
  104.          EndProperty
  105.          BeginProperty Button10 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  106.             Key             =   "Copy"
  107.             Description     =   "Copy selection"
  108.             Object.ToolTipText     =   "Copy selection"
  109.             Object.Tag             =   ""
  110.             ImageIndex      =   7
  111.          EndProperty
  112.          BeginProperty Button11 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  113.             Key             =   "Paste"
  114.             Description     =   "Paste from clipboard"
  115.             Object.ToolTipText     =   "Paste from Clipboard"
  116.             Object.Tag             =   ""
  117.             ImageIndex      =   8
  118.          EndProperty
  119.          BeginProperty Button12 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  120.             Key             =   "Undo"
  121.             Description     =   "Undo last edit"
  122.             Object.ToolTipText     =   "Undo last edit"
  123.             Object.Tag             =   ""
  124.             ImageIndex      =   9
  125.          EndProperty
  126.          BeginProperty Button13 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  127.             Key             =   ""
  128.             Object.Tag             =   ""
  129.             Style           =   3
  130.             MixedState      =   -1  'True
  131.          EndProperty
  132.          BeginProperty Button14 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  133.             Key             =   ""
  134.             Object.Tag             =   ""
  135.             Style           =   4
  136.             Object.Width           =   1200
  137.             MixedState      =   -1  'True
  138.          EndProperty
  139.          BeginProperty Button15 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  140.             Key             =   "Bold"
  141.             Description     =   "Bold"
  142.             Object.ToolTipText     =   "Bold"
  143.             Object.Tag             =   ""
  144.             ImageIndex      =   10
  145.          EndProperty
  146.          BeginProperty Button16 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  147.             Key             =   "Italic"
  148.             Description     =   "Italic"
  149.             Object.ToolTipText     =   "Italic"
  150.             Object.Tag             =   ""
  151.             ImageIndex      =   11
  152.          EndProperty
  153.          BeginProperty Button17 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  154.             Key             =   "Underline"
  155.             Description     =   "Underline"
  156.             Object.ToolTipText     =   "Underline"
  157.             Object.Tag             =   ""
  158.             ImageIndex      =   12
  159.          EndProperty
  160.          BeginProperty Button18 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  161.             Key             =   ""
  162.             Object.Tag             =   ""
  163.             Style           =   3
  164.             MixedState      =   -1  'True
  165.          EndProperty
  166.          BeginProperty Button19 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  167.             Key             =   "Left"
  168.             Description     =   "Left justify"
  169.             Object.ToolTipText     =   "Left justify"
  170.             Object.Tag             =   ""
  171.             ImageIndex      =   13
  172.             Style           =   2
  173.          EndProperty
  174.          BeginProperty Button20 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  175.             Key             =   "Center"
  176.             Description     =   "Center"
  177.             Object.ToolTipText     =   "Center"
  178.             Object.Tag             =   ""
  179.             ImageIndex      =   14
  180.             Style           =   2
  181.          EndProperty
  182.          BeginProperty Button21 {0713F354-850A-101B-AFC0-4210102A8DA7} 
  183.             Key             =   "Right"
  184.             Description     =   "Right justify"
  185.             Object.ToolTipText     =   "Right justify"
  186.             Object.Tag             =   ""
  187.             ImageIndex      =   15
  188.             Style           =   2
  189.          EndProperty
  190.       EndProperty
  191.       MouseIcon       =   "EDWINA.frx":0CFA
  192.       Begin DropStack.XDropStack dropFind 
  193.          Height          =   288
  194.          Left            =   4596
  195.          TabIndex        =   5
  196.          Top             =   36
  197.          Width           =   1212
  198.          _ExtentX        =   2138
  199.          _ExtentY        =   508
  200.          BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  201.             Name            =   "MS Sans Serif"
  202.             Size            =   7.8
  203.             Charset         =   0
  204.             Weight          =   400
  205.             Underline       =   0   'False
  206.             Italic          =   0   'False
  207.             Strikethrough   =   0   'False
  208.          EndProperty
  209.       End
  210.       Begin DropStack.XDropStack dropFile 
  211.          Height          =   288
  212.          Left            =   1092
  213.          TabIndex        =   3
  214.          Top             =   36
  215.          Width           =   1212
  216.          _ExtentX        =   2138
  217.          _ExtentY        =   508
  218.          BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  219.             Name            =   "MS Sans Serif"
  220.             Size            =   7.8
  221.             Charset         =   0
  222.             Weight          =   400
  223.             Underline       =   0   'False
  224.             Italic          =   0   'False
  225.             Strikethrough   =   0   'False
  226.          EndProperty
  227.       End
  228.    End
  229.    Begin Editor.XEditor edit 
  230.       Height          =   1836
  231.       Left            =   3096
  232.       TabIndex        =   0
  233.       Top             =   2328
  234.       Width           =   2196
  235.       _extentx        =   3863
  236.       _extenty        =   3228
  237.       autoverbmenu    =   -1
  238.       borderstyle     =   0
  239.       font            =   "EDWINA.frx":0D16
  240.       textcolor       =   0
  241.       mouseicon       =   "EDWINA.frx":0D3A
  242.    End
  243.    Begin VB.TextBox txtInput 
  244.       BackColor       =   &H8000000F&
  245.       Height          =   396
  246.       Left            =   6240
  247.       TabIndex        =   2
  248.       Top             =   5580
  249.       Visible         =   0   'False
  250.       Width           =   972
  251.    End
  252.    Begin ComctlLib.StatusBar statEdit 
  253.       Align           =   2  'Align Bottom
  254.       Height          =   456
  255.       Left            =   0
  256.       TabIndex        =   1
  257.       Top             =   6036
  258.       Width           =   8400
  259.       _ExtentX        =   14817
  260.       _ExtentY        =   804
  261.       SimpleText      =   ""
  262.       _Version        =   327680
  263.       BeginProperty Panels {0713E89E-850A-101B-AFC0-4210102A8DA7} 
  264.          NumPanels       =   8
  265.          BeginProperty Panel1 {0713E89F-850A-101B-AFC0-4210102A8DA7} 
  266.             Object.Width           =   2469
  267.             MinWidth        =   2469
  268.             Text            =   "Line: 3000 / 3000"
  269.             TextSave        =   "Line: 3000 / 3000"
  270.             Key             =   ""
  271.             Object.Tag             =   ""
  272.          EndProperty
  273.          BeginProperty Panel2 {0713E89F-850A-101B-AFC0-4210102A8DA7} 
  274.             Object.Width           =   2558
  275.             MinWidth        =   2558
  276.             Text            =   "Column: 100 / 100"
  277.             TextSave        =   "Column: 100 / 100"
  278.             Key             =   ""
  279.             Object.Tag             =   ""
  280.          EndProperty
  281.          BeginProperty Panel3 {0713E89F-850A-101B-AFC0-4210102A8DA7} 
  282.             Object.Width           =   1940
  283.             MinWidth        =   1940
  284.             Text            =   "Percent: 100"
  285.             TextSave        =   "Percent: 100"
  286.             Key             =   ""
  287.             Object.Tag             =   ""
  288.          EndProperty
  289.          BeginProperty Panel4 {0713E89F-850A-101B-AFC0-4210102A8DA7} 
  290.             Object.Width           =   1852
  291.             MinWidth        =   1852
  292.             Text            =   "Margin: 90"
  293.             TextSave        =   "Margin: 90"
  294.             Key             =   ""
  295.             Object.Tag             =   ""
  296.             Object.ToolTipText     =   "Margin"
  297.          EndProperty
  298.          BeginProperty Panel5 {0713E89F-850A-101B-AFC0-4210102A8DA7} 
  299.             Style           =   5
  300.             Object.Width           =   1411
  301.             MinWidth        =   1411
  302.             TextSave        =   "7:37 AM"
  303.             Key             =   ""
  304.             Object.Tag             =   ""
  305.          EndProperty
  306.          BeginProperty Panel6 {0713E89F-850A-101B-AFC0-4210102A8DA7} 
  307.             Object.Width           =   970
  308.             MinWidth        =   970
  309.             Text            =   "INS"
  310.             TextSave        =   "INS"
  311.             Key             =   ""
  312.             Object.Tag             =   ""
  313.          EndProperty
  314.          BeginProperty Panel7 {0713E89F-850A-101B-AFC0-4210102A8DA7} 
  315.             Style           =   1
  316.             Enabled         =   0   'False
  317.             Object.Width           =   970
  318.             MinWidth        =   970
  319.             TextSave        =   "CAPS"
  320.             Key             =   ""
  321.             Object.Tag             =   ""
  322.          EndProperty
  323.          BeginProperty Panel8 {0713E89F-850A-101B-AFC0-4210102A8DA7} 
  324.             Object.Width           =   970
  325.             MinWidth        =   970
  326.             Text            =   "SAV"
  327.             TextSave        =   "SAV"
  328.             Key             =   ""
  329.             Object.Tag             =   ""
  330.          EndProperty
  331.       EndProperty
  332.       BeginProperty Font {0BE35203-8F91-11CE-9DE3-00AA004BB851} 
  333.          Name            =   "MS Sans Serif"
  334.          Size            =   7.8
  335.          Charset         =   0
  336.          Weight          =   400
  337.          Underline       =   0   'False
  338.          Italic          =   0   'False
  339.          Strikethrough   =   0   'False
  340.       EndProperty
  341.       MouseIcon       =   "EDWINA.frx":0D58
  342.    End
  343.    Begin ComctlLib.ImageList imlstEdit 
  344.       Left            =   5136
  345.       Top             =   408
  346.       _ExtentX        =   804
  347.       _ExtentY        =   804
  348.       BackColor       =   12632256
  349.       ImageWidth      =   16
  350.       ImageHeight     =   16
  351.       MaskColor       =   12632256
  352.       _Version        =   327680
  353.       BeginProperty Images {0713E8C2-850A-101B-AFC0-4210102A8DA7} 
  354.          NumListImages   =   15
  355.          BeginProperty ListImage1 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  356.             Picture         =   "EDWINA.frx":0D74
  357.             Key             =   "New"
  358.          EndProperty
  359.          BeginProperty ListImage2 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  360.             Picture         =   "EDWINA.frx":0E86
  361.             Key             =   "Open"
  362.          EndProperty
  363.          BeginProperty ListImage3 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  364.             Picture         =   "EDWINA.frx":0F98
  365.             Key             =   "Save"
  366.          EndProperty
  367.          BeginProperty ListImage4 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  368.             Picture         =   "EDWINA.frx":10AA
  369.             Key             =   "Print"
  370.          EndProperty
  371.          BeginProperty ListImage5 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  372.             Picture         =   "EDWINA.frx":11BC
  373.             Key             =   "Find"
  374.          EndProperty
  375.          BeginProperty ListImage6 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  376.             Picture         =   "EDWINA.frx":12CE
  377.             Key             =   "Cut"
  378.          EndProperty
  379.          BeginProperty ListImage7 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  380.             Picture         =   "EDWINA.frx":13E0
  381.             Key             =   "Copy"
  382.          EndProperty
  383.          BeginProperty ListImage8 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  384.             Picture         =   "EDWINA.frx":14F2
  385.             Key             =   "Paste"
  386.          EndProperty
  387.          BeginProperty ListImage9 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  388.             Picture         =   "EDWINA.frx":1604
  389.             Key             =   "Undo"
  390.          EndProperty
  391.          BeginProperty ListImage10 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  392.             Picture         =   "EDWINA.frx":1716
  393.             Key             =   "Bold"
  394.          EndProperty
  395.          BeginProperty ListImage11 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  396.             Picture         =   "EDWINA.frx":1828
  397.             Key             =   "Italic"
  398.          EndProperty
  399.          BeginProperty ListImage12 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  400.             Picture         =   "EDWINA.frx":193A
  401.             Key             =   "Underline"
  402.          EndProperty
  403.          BeginProperty ListImage13 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  404.             Picture         =   "EDWINA.frx":1A4C
  405.             Key             =   ""
  406.          EndProperty
  407.          BeginProperty ListImage14 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  408.             Picture         =   "EDWINA.frx":1B5E
  409.             Key             =   "Center"
  410.          EndProperty
  411.          BeginProperty ListImage15 {0713E8C3-850A-101B-AFC0-4210102A8DA7} 
  412.             Picture         =   "EDWINA.frx":1C70
  413.             Key             =   "Right"
  414.          EndProperty
  415.       EndProperty
  416.    End
  417.    Begin VB.Menu mnuFile 
  418.       Caption         =   "&File"
  419.       Begin VB.Menu mnuFileNew 
  420.          Caption         =   "&New"
  421.       End
  422.       Begin VB.Menu mnuFileOpen 
  423.          Caption         =   "&Open..."
  424.       End
  425.       Begin VB.Menu mnuFileSave 
  426.          Caption         =   "&Save"
  427.       End
  428.       Begin VB.Menu mnuFileSaveAs 
  429.          Caption         =   "Save &As..."
  430.       End
  431.       Begin VB.Menu mnuSepPrint 
  432.          Caption         =   "-"
  433.       End
  434.       Begin VB.Menu mnuFilePrint 
  435.          Caption         =   "&Print..."
  436.       End
  437.       Begin VB.Menu mnuFilePageSetup 
  438.          Caption         =   "Page Set&up..."
  439.       End
  440.       Begin VB.Menu mnuSepExit 
  441.          Caption         =   "-"
  442.       End
  443.       Begin VB.Menu mnuFileExit 
  444.          Caption         =   "E&xit"
  445.       End
  446.    End
  447.    Begin VB.Menu mnuEdit 
  448.       Caption         =   "&Edit"
  449.       Begin VB.Menu mnuEditUndo 
  450.          Caption         =   "&Undo"
  451.          Shortcut        =   ^Z
  452.       End
  453.       Begin VB.Menu mnuSepCut 
  454.          Caption         =   "-"
  455.       End
  456.       Begin VB.Menu mnuEditCut 
  457.          Caption         =   "Cu&t"
  458.          Shortcut        =   ^X
  459.       End
  460.       Begin VB.Menu mnuEditCopy 
  461.          Caption         =   "&Copy"
  462.          Shortcut        =   ^C
  463.       End
  464.       Begin VB.Menu mnuEditPaste 
  465.          Caption         =   "&Paste"
  466.          Shortcut        =   ^V
  467.       End
  468.       Begin VB.Menu mnuEditDelete 
  469.          Caption         =   "De&lete"
  470.          Shortcut        =   {DEL}
  471.       End
  472.       Begin VB.Menu mnuSepSelectAll 
  473.          Caption         =   "-"
  474.       End
  475.       Begin VB.Menu mnuEditSelectAll 
  476.          Caption         =   "Select &All"
  477.       End
  478.       Begin VB.Menu mnuEditTimeDate 
  479.          Caption         =   "Time/&Date"
  480.       End
  481.    End
  482.    Begin VB.Menu mnuSearch 
  483.       Caption         =   "&Search"
  484.       Begin VB.Menu mnuSearchFind 
  485.          Caption         =   "&Find..."
  486.          Shortcut        =   ^F
  487.       End
  488.       Begin VB.Menu mnuSearchFindNext 
  489.          Caption         =   "Find &Next"
  490.          Shortcut        =   {F3}
  491.       End
  492.       Begin VB.Menu mnuSearchFindPrevious 
  493.          Caption         =   "Find Pre&vious"
  494.          Shortcut        =   +{F3}
  495.       End
  496.       Begin VB.Menu mnuSearchReplace 
  497.          Caption         =   "&Replace..."
  498.          Shortcut        =   ^H
  499.       End
  500.       Begin VB.Menu mnuReplaceNext 
  501.          Caption         =   "Re&place Next"
  502.          Shortcut        =   ^{F3}
  503.       End
  504.    End
  505.    Begin VB.Menu mnuOptions 
  506.       Caption         =   "&Options"
  507.       Begin VB.Menu mnuOptionFont 
  508.          Caption         =   "Fon&t..."
  509.       End
  510.       Begin VB.Menu mnuOptionSelFont 
  511.          Caption         =   "&Selection Font..."
  512.       End
  513.       Begin VB.Menu mnuOptionBackColor 
  514.          Caption         =   "&Background Color..."
  515.       End
  516.       Begin VB.Menu mnuOptionTextColor 
  517.          Caption         =   "Text &Color..."
  518.       End
  519.       Begin VB.Menu mnuOptionRichText 
  520.          Caption         =   "&Rich Text"
  521.          Checked         =   -1  'True
  522.       End
  523.    End
  524.    Begin VB.Menu cmnuContext 
  525.       Caption         =   "Context"
  526.       Begin VB.Menu cmnuCut 
  527.          Caption         =   "Cu&t"
  528.       End
  529.       Begin VB.Menu cmnuCopy 
  530.          Caption         =   "&Copy"
  531.       End
  532.       Begin VB.Menu cmnuPaste 
  533.          Caption         =   "&Paste"
  534.       End
  535.       Begin VB.Menu cmnuDelete 
  536.          Caption         =   "De&lete"
  537.       End
  538.       Begin VB.Menu cmnuSep1 
  539.          Caption         =   "-"
  540.       End
  541.       Begin VB.Menu cmnuFont 
  542.          Caption         =   "&Font..."
  543.       End
  544.    End
  545. End
  546. Attribute VB_Name = "FEdwina"
  547. Attribute VB_GlobalNameSpace = False
  548. Attribute VB_Creatable = False
  549. Attribute VB_PredeclaredId = True
  550. Attribute VB_Exposed = False
  551. Option Explicit
  552.  
  553. Enum EPanels
  554.     epLine = 1
  555.     epCol = 2
  556.     epPercent = 3
  557.     epMargin = 4
  558.     epTime = 5
  559.     epIns = 6
  560.     epCap = 7
  561.     epSav = 8
  562. End Enum
  563.  
  564. Const sBold = "Bold"
  565. Const sItalic = "Italic"
  566. Const sUnderline = "Underline"
  567. Const sLeft = "Left"
  568. Const sCenter = "Center"
  569. Const sRight = "Right"
  570.  
  571. Private fInput As Boolean
  572. Private fInFindCompleted As Boolean
  573.  
  574. Private Sub Form_Load()
  575.     cmnuContext.Visible = False
  576.     App.Title = Me.Caption
  577.     If Command$ <> sEmpty Then
  578.         Dim fView As Boolean, fPrint As Boolean, sTarget As String
  579.         ParseCmd fView, fPrint, sTarget
  580.         edit.LoadFile sTarget
  581.         If fView Or fPrint Then edit.Locked = True
  582.         If fPrint Then
  583.             edit.SelPrint Printer.hDC
  584.             Printer.EndDoc
  585.         End If
  586.     End If
  587.     dropFile.MaxCount = 3
  588.     dropFile.Text = edit.filename
  589.     edit.EnableTab = True
  590.     edit.FindWhatMax = 3
  591.     dropFind.MaxCount = edit.FindWhatMax
  592.     SetTextMode True
  593.     edit_StatusChange 0, 0, 0, 0, 0, 0, edit.DirtyBit
  594. End Sub
  595.  
  596. Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)
  597.     If Not edit.DirtyDialog Then Cancel = True
  598. End Sub
  599.  
  600. Private Sub Form_Resize()
  601.     Dim iMargin As Integer
  602.     If Me.WindowState <> vbMinimized Then
  603.         edit.Move 0, barEdit.Height, Me.ScaleWidth, Me.ScaleHeight - barEdit.Height - statEdit.Height
  604.         iMargin = Val(Mid$(statEdit.Panels(epMargin).Text, 9))
  605.         edit.RightMargin = (iMargin / 100) * edit.Width
  606.     End If
  607. End Sub
  608.  
  609. Private Sub ParseCmd(fView As Boolean, fPrint As Boolean, sTarget As String)
  610.     Dim sToken As String, s As String
  611.     Const sSep = sSpace & sTab & sCrLf
  612.     ' Error handling could be improved
  613.     sToken = GetToken(Command$, sSep)
  614.     Do While sToken <> sEmpty
  615.         Select Case Left$(sToken, 1)
  616.         Case "-", "/"
  617.             s = UCase$(Mid$(sToken, 2, 1))
  618.             If s = "V" Then fView = True
  619.             If s = "P" Then fPrint = True
  620.             ' Throw away unknown options
  621.         Case Else
  622.             ' Use first non-option argument as target
  623.             If sTarget = sEmpty Then sTarget = sToken
  624.         End Select
  625.         sToken = GetToken(sEmpty, sSep)
  626.     Loop
  627. End Sub
  628.  
  629. Private Sub mnuFileNew_Click()
  630.     If edit.DirtyDialog Then edit.FileNew
  631.     dropFile.Text = edit.filename
  632. End Sub
  633.  
  634. Private Sub mnuFileOpen_Click()
  635.     If edit.DirtyDialog Then edit.FileOpen
  636.     dropFile.Text = edit.filename
  637.     SetTextMode edit.TextMode
  638. End Sub
  639.  
  640. Private Sub mnuFileSave_Click()
  641.     edit.FileSave
  642. End Sub
  643.  
  644. Private Sub mnuFileSaveAs_Click()
  645.     edit.FileSaveAs
  646.     dropFile.Text = edit.filename
  647. End Sub
  648.  
  649. Private Sub mnuFilePrint_Click()
  650.     edit.FilePrint
  651. End Sub
  652.  
  653. Private Sub mnuFilePageSetup_Click()
  654.     edit.FilePageSetup
  655. End Sub
  656.  
  657. Private Sub mnuFileExit_Click()
  658.     Unload Me
  659. End Sub
  660.  
  661. Private Sub mnuEdit_Click()
  662.     mnuEditUndo.Enabled = edit.CanUndo
  663. End Sub
  664.  
  665. Private Sub mnuEditUndo_Click()
  666.     edit.EditUndo
  667. End Sub
  668.  
  669. Private Sub mnuEditCopy_Click()
  670.     edit.EditCopy
  671. End Sub
  672.  
  673. Private Sub mnuEditCut_Click()
  674.     edit.EditCut
  675. End Sub
  676.  
  677. Private Sub mnuEditDelete_Click()
  678.     edit.EditDelete
  679. End Sub
  680.  
  681. Private Sub mnuEditPaste_Click()
  682.     edit.EditPaste
  683. End Sub
  684.  
  685. Private Sub mnuEditSelectAll_Click()
  686.     edit.EditSelectAll
  687. End Sub
  688.  
  689. Private Sub mnuEditTimeDate_Click()
  690.     edit.SelText = Now
  691. End Sub
  692.  
  693. Private Sub mnuSearchFind_Click()
  694.     edit.SearchFind
  695. End Sub
  696.  
  697. Private Sub mnuSearchFindNext_Click()
  698.     edit.SearchFindNext
  699. End Sub
  700.  
  701. Private Sub mnuSearchFindPrevious_Click()
  702.     Dim i As Integer
  703.     i = edit.SearchOptionDirection
  704.     edit.SearchOptionDirection = 2
  705.     edit.SearchFindNext
  706.     edit.SearchOptionDirection = i
  707. End Sub
  708.  
  709. Private Sub mnuSearchReplace_Click()
  710.     edit.SearchReplace
  711. End Sub
  712.  
  713. Private Sub mnuReplaceNext_Click()
  714.     edit.ReplaceNext dropFind, edit.ReplaceWith
  715.     edit.FindNext dropFind
  716. End Sub
  717.  
  718. Private Sub mnuOptionFont_Click()
  719.     edit.OptionFont
  720. End Sub
  721.  
  722. Private Sub mnuOptionSelFont_Click()
  723.     edit.OptionFont True
  724. End Sub
  725.  
  726. Private Sub mnuOptionBackColor_Click()
  727. With edit
  728.     .BackColor = .OptionColor(.BackColor)
  729. End With
  730. End Sub
  731.  
  732. Private Sub mnuOptionTextColor_Click()
  733. With edit
  734.     If .TextMode Then
  735.         .TextColor = .OptionColor(.TextColor)
  736.     Else
  737.         Dim clr As Long
  738.         clr = IIf(Not IsNull(.SelColor), .SelColor, vbBlack)
  739.         .SelColor = .OptionColor(clr)
  740.     End If
  741. End With
  742. End Sub
  743.  
  744. Private Sub mnuOptionRichText_Click()
  745.     SetTextMode Not edit.TextMode
  746. End Sub
  747.  
  748. Private Sub SetTextMode(fText As Boolean)
  749.     edit.TextMode = fText
  750.     mnuOptionRichText.Checked = Not fText
  751.     With barEdit
  752.         .Buttons(sBold).Visible = Not fText
  753.         .Buttons(sItalic).Visible = Not fText
  754.         .Buttons(sUnderline).Visible = Not fText
  755.         .Buttons(sLeft).Visible = Not fText
  756.         .Buttons(sCenter).Visible = Not fText
  757.         .Buttons(sRight).Visible = Not fText
  758.     End With
  759.     mnuOptionSelFont.Enabled = Not fText
  760.     mnuOptionTextColor.Caption = IIf(fText, "Text &Color", "Selection &Color")
  761. End Sub
  762.  
  763. Private Sub cmnuCopy_Click()
  764.     edit.EditCopy
  765. End Sub
  766.  
  767. Private Sub cmnuCut_Click()
  768.     edit.EditCut
  769. End Sub
  770.  
  771. Private Sub cmnuDelete_Click()
  772.     edit.EditDelete
  773. End Sub
  774.  
  775. Private Sub cmnuPaste_Click()
  776.     edit.EditPaste
  777. End Sub
  778.  
  779. Private Sub cmnuFont_Click()
  780.     edit.OptionFont
  781. End Sub
  782.  
  783. Private Sub barEdit_ButtonClick(ByVal Button As Button)
  784.     Select Case Button.Key
  785.     Case "New"
  786.         mnuFileNew_Click
  787.     Case "Open"
  788.         mnuFileOpen_Click
  789.     Case "Save"
  790.         mnuFileSave_Click
  791.     Case "Print"
  792.         edit.SelPrint Printer.hDC
  793.     Case "Find"
  794.         mnuSearchFindNext_Click
  795.     Case "Cut"
  796.         mnuEditCut_Click
  797.     Case "Copy"
  798.         mnuEditCopy_Click
  799.     Case "Paste"
  800.         mnuEditPaste_Click
  801.     Case "Undo"
  802.         mnuEditUndo_Click
  803.     Case sBold
  804.         edit.SelBold = Not edit.SelBold
  805.     Case sItalic
  806.         edit.SelItalic = Not edit.SelItalic
  807.     Case sUnderline
  808.         edit.SelUnderline = Not edit.SelUnderline
  809.     Case sLeft
  810.         edit.SelAlignment = rtfLeft
  811.     Case sCenter
  812.         edit.SelAlignment = rtfCenter
  813.     Case sRight
  814.         edit.SelAlignment = rtfRight
  815.     End Select
  816. End Sub
  817.  
  818. Private Sub dropFile_Completed(Text As String)
  819.     Static fInCompleted As Boolean
  820.     If fInCompleted Then Exit Sub
  821.     fInCompleted = True
  822.     On Error GoTo FailCompleted
  823.     edit.TextMode = Not IsRTF(Text)
  824.     edit.LoadFile Text
  825.     SetTextMode edit.TextMode
  826.     fInCompleted = False
  827.     Exit Sub
  828. FailCompleted:
  829.     StatusMessage Err.Description & ": " & dropFile.Text
  830.     dropFile.Text = edit.filename
  831.     fInCompleted = False
  832. End Sub
  833.  
  834. Private Sub dropFind_Completed(Text As String)
  835.     If fInFindCompleted Then Exit Sub
  836.     fInFindCompleted = True
  837.     edit.FindWhat = Text
  838.     edit.SetFocus
  839.     edit.FindNext
  840.     fInFindCompleted = False
  841. End Sub
  842.  
  843. Private Sub edit_StatusChange(LineCur As Long, LineCount As Long, _
  844.                               ColumnCur As Long, ColumnCount As Long, _
  845.                               CharacterCur As Long, _
  846.                               CharacterCount As Long, DirtyBit As Boolean)
  847. With statEdit
  848.     .Panels(epLine).Text = "Line: " & FmtInt(LineCur, 4) & _
  849.                       " / " & FmtInt(LineCount, 4, True)
  850.     .Panels(epCol).Text = "Column: " & FmtInt(ColumnCur, 3) & _
  851.                       " / " & FmtInt(ColumnCount, 3, True)
  852.     Dim iPercent As Integer
  853.     iPercent = (CharacterCur / (CharacterCount + 1)) * 100
  854.     .Panels(epPercent).Text = "Percent: " & FmtInt(iPercent, 3)
  855.     .Panels(epSav).Enabled = DirtyBit
  856.     .Panels(epIns).Enabled = Not edit.OverWrite
  857. End With
  858. With barEdit
  859.     .Buttons(sBold).Value = _
  860.         IIf(edit.SelBold, tbrPressed, tbrUnpressed)
  861.     .Buttons(sItalic).Value = _
  862.         IIf(edit.SelItalic, tbrPressed, tbrUnpressed)
  863.     .Buttons(sUnderline).Value = _
  864.         IIf(edit.SelUnderline, tbrPressed, tbrUnpressed)
  865. End With
  866. End Sub
  867.  
  868. Private Sub edit_SearchChange(Kind As ESearchEvent)
  869.     Static fInSearchChange As Boolean
  870.     If fInSearchChange Then Exit Sub
  871.     fInSearchChange = True
  872.     If Kind = eseFindWhat Then
  873.         If dropFind.Text <> edit.FindWhat Then
  874.             fInFindCompleted = True
  875.             dropFind.Text = edit.FindWhat
  876.             fInFindCompleted = False
  877.         End If
  878.     End If
  879.     fInSearchChange = False
  880. End Sub
  881.  
  882. Private Sub edit_KeyPress(KeyAscii As Integer)
  883.     statEdit.Style = sbrNormal
  884. End Sub
  885.  
  886. Private Sub edit_Click()
  887.     statEdit.Style = sbrNormal
  888. End Sub
  889.  
  890. Private Sub edit_GotFocus()
  891.     statEdit.Style = sbrNormal
  892. End Sub
  893.  
  894. Private Sub statEdit_PanelClick(ByVal Panel As Panel)
  895. With Panel
  896.     Dim s As String, iVal As Long
  897.     Select Case .Index
  898.     Case epLine
  899.         s = GetPanelInput(Panel, 6, 4)
  900.         iVal = Val(s)
  901.         If iVal >= 1 And iVal <= edit.Lines Then edit.Line = iVal
  902.     Case epCol
  903.         s = GetPanelInput(Panel, 8, 4)
  904.         iVal = Val(s)
  905.         If iVal >= 1 And iVal <= edit.Columns Then edit.Column = iVal
  906.     Case epPercent
  907.         s = GetPanelInput(Panel, 9, 3)
  908.         iVal = Val(s)
  909.         If iVal >= 0 And iVal <= 100 Then edit.Percent = iVal
  910.     Case epMargin
  911.         s = GetPanelInput(Panel, 8, 3)
  912.         iVal = Val(s)
  913.         If iVal <= 0 Then iVal = 90
  914.         edit.RightMargin = (iVal / 100) * edit.Width
  915.         .Text = Mid$(.Text, 1, 8) & iVal
  916.     Case epTime
  917.         .Style = IIf(.Style = sbrTime, sbrDate, sbrTime)
  918.     Case epIns
  919.         edit.OverWrite = Not edit.OverWrite
  920.         statEdit.Panels(epIns).Enabled = Not edit.OverWrite
  921.     Case epCap
  922.         Keyboard.CapsState = Not Keyboard.CapsState
  923.     Case epSav
  924.         edit.DirtyBit = Not edit.DirtyBit
  925.         .Enabled = edit.DirtyBit
  926.     End Select
  927.     statEdit.Refresh
  928.     edit.SetFocus
  929. End With
  930. End Sub
  931. '
  932.  
  933. Function GetPanelInput(pan As Panel, ByVal iField As Long, ByVal cField As Long) As String
  934. With txtInput
  935.     Dim dx As Single, dy As Single, dxIn As Single, dxStart As Single
  936.     dxStart = statEdit.Panels(1).Left
  937.     dx = GetTextExtentWnd(statEdit.hWnd, Left$(pan.Text, iField - 2), dy)
  938.     dxIn = GetTextExtentWnd(statEdit.hWnd, String$(cField, "0"))
  939.     fInput = True
  940.     Set .Font = statEdit.Font
  941.     Dim iPos As Long
  942.     iPos = InStr(iField, pan.Text, "/")
  943.     If iPos Then
  944.         .Text = Trim$(Mid$(pan.Text, iField, iPos - iField - 1))
  945.     Else
  946.         .Text = Trim$(Mid$(pan.Text, iField))
  947.     End If
  948.     .SelStart = 0
  949.     .SelLength = Len(.Text)
  950.     .Left = dxStart + pan.Left + dx * Screen.TwipsPerPixelX
  951.     .Width = dxIn * Screen.TwipsPerPixelX
  952.     .Height = dy * 1.2
  953.     .Top = statEdit.Top + (statEdit.Height / 2) - (.Height / 2)
  954.     .Visible = True
  955.     .SetFocus
  956.     Do While fInput
  957.         DoEvents
  958.     Loop
  959.     GetPanelInput = .Text
  960.     .Visible = False
  961. End With
  962. End Function
  963.  
  964. Private Sub txtInput_KeyUp(KeyCode As Integer, Shift As Integer)
  965.     Select Case KeyCode
  966.     Case vbKeyReturn, vbKeyEscape, vbKeyTab
  967.         edit.SetFocus
  968.     End Select
  969. End Sub
  970.  
  971. Private Sub txtInput_LostFocus()
  972.     fInput = False
  973. End Sub
  974.  
  975. Sub StatusMessage(sMsg As String)
  976.     statEdit.Style = sbrSimple
  977.     statEdit.SimpleText = sMsg
  978. End Sub
  979.